其他
整理了一份 Docker系统知识,从安装到熟练操作看这篇就够了 | 原力计划
传统虚拟机技术是虚拟出一套硬件后,在其上运行一个完整操作系统,在该系统上再运行所需应用进程。 而容器内的应用进程直接运行于宿主的内核,容器内没有自己的内核,而且也没有进行硬件虚拟。因此容器要比传统虚拟机更为轻便。 每个容器之间互相隔离,每个容器有自己的文件系统 ,容器之间进程不会相互影响,能区分计算资源。
更快速的应用交付和部署; 更便捷的升级和扩缩容; 更简单的系统运维; 更高效的计算资源利用。
Linux localhost.localdomain 3.10.0-1062.12.1.el7.x86_64 #1 SMP Tue Feb 4 23:02:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
2、更换源
sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
"registry-mirrors": ["刚刚复制的加速器地址"]
}
docker info #显示Docker系统信息,包括镜像和容器数
docker --help #查看Docker有哪些命令
docker search 某个镜像名字 #查询某个镜像
docker pull 某个镜像名字 #拉取(下载)某个镜像
docker rmi 某个镜像名字ID #删除某个镜像
docker ps [OPTIONS] #列出当前所有正在运行的容器
exit #容器停止退出
ctrl+P+Q #容器不停止退出
docker start 容器ID或者容器名 #启动容器
docker restart 容器ID或者容器名 #重启容器
docker stop 容器ID或者容器名 #停止容器
docker kill 容器ID或者容器名 #强制停止容器
docker rm 容器ID #删除已停止的容器
docker rm -f $(docker ps -a -q) #一次性删除多个容器
docker ps -a -q | xargs docker rm #一次性删除多个容器
docker logs -f -t --tail 容器ID #查看容器日志,-t是加入时间戳,-f是最新的日志打印,--tail数字显示最后多少条
docker top 容器ID #查看容器内运行的进程
docker inspect 容器ID #查看容器内部细节
docker exec -it 容器ID bashShell #进入正在运行的容器并以命令行交互
docker attach 容器ID #重新进入Docker容器
docker cp 容器ID:容器内路径 目的主机路径 #从容器内拷贝文件到主机上
cd /
# 新建mydocker
sudo mkdir mydocker
sudo vim Dockerfile # 编辑
FROM centos
VOLUME ["/dataVolumeContainer1","/dataVolumeContainer2"]
CMD echo "finished,--------success1"
CMD /bin/bash
编写Dockerfile文件 dockerbuild dockerrun
docker从基础镜像运行一个容器; 执行一条指令并对容器作出修改; 执行类似docker commit的操作提交一个新的镜像层; docker再基于刚提交的镜像运行一个新容器; 执行dockerfile中的下一条指令直到所有指令都执行完成。
MAINTAINER #镜像维护者的姓名和邮箱地址
RUN #容器构建时需要运行的命令
EXPOSE #当前容器对外暴露出的端口
WORKDIR #指定在创建容器后,终端默认登陆的进来工作目录
ENV #用来在构建镜像过程中设置环境变量
ADD #将宿主机目录下的文件拷贝进镜像且ADD命令会自动处理URL和解压tar压缩包
COPY #类似ADD,拷贝文件和目录到镜像中。将从构建上下文目录中 <源路径> 的文件/目录复制到新的一层的镜像内的 <目标路径> 位置
VOLUME #容器数据卷,用于数据保存和持久化工作
CMD #指定一个容器启动时要运行的命令,Dockerfile 中可以有多个 CMD 指令,但只有最后一个生效,CMD 会被 docker run 之后的参数替换
ENTRYPOINT #指定一个容器启动时要运行的命令,ENTRYPOINT 的目的和 CMD 一样,都是在指定容器启动程序及参数
ONBUILD #当构建一个被继承的Dockerfile时运行命令,父镜像在被子继承后父镜像的onbuild被触发
cd /
#新建mydocker文件夹
sudo mkdir mydocker
MAINTAINER IronmanJay<IronmanJay@qq.com>
ENV MYPATH /usr/localWORKDIR $MYPATH
RUN yum -y install vimRUN yum -y install net-tools
EXPOSE 80
CMD echo $MYPATHCMD echo "success--------------ok"CMD /bin/bash
搜索镜像 拉取镜像 查看镜像 启动镜像 停止容器 移除容器
-P #随机分配端口
i #交互
t #终端
--name mysql: #运行服务名字
/IronmanJay/mysql/conf:/etc/mysql/conf.d : #将主机/IronmanJay/mysql录下的conf/my.cnf 挂载到容器的 /etc/mysql/conf.d-v
/IronmanJay/mysql/logs:/logs: #将主机/IronmanJay/mysql目录下的 logs 目录挂载到容器的 /logs
-v /IronmanJay/mysql/data:/var/lib/mysql : #将主机/IronmanJay/mysql目录下的data目录挂载到容器的 /var/lib/mysql -e
MYSQL_ROOT_PASSWORD=123456: #初始化 root 用户的密码。-d mysql: 后台程序运行mysql
Modified on